export default function(time, f) {
	f = f || 'yyyy-MM-dd HH:mm:ss'

	let date
	if (typeof time === 'object') {
		date = time
	} else {
		if ((typeof time === 'string')) {
			if ((/^[0-9]+$/.test(time))) {
				time = parseInt(time)
			} else {
				time = time.replace(new RegExp(/-/gm), '/')
			}
		}

		if ((typeof time === 'number') && (time.toString().length === 10)) {
			time = time * 1000
		}
		date = new Date(time)
	}

	let formatPattern = {
		yyyy: (d) => {
			return d.getFullYear().toString()
		},
		yy: (d) => {
			return (d.getYear() % 100).toString()
		},
		MM: (d) => {
			return (d.getMonth() + 1).toString().padStart(2, '0')
		},
		M: (d) => {
			return (d.getMonth() + 1).toString()
		},
		dd: (d) => {
			return d.getDate().toString().padStart(2, '0')
		},
		d: (d) => {
			return d.getDate().toString()
		},
		HH: (d) => {
			return d.getHours().toString().padStart(2, '0')
		},
		H: (d) => {
			return d.getHours().toString()
		},
		mm: (d) => {
			return d.getMinutes().toString().padStart(2, '0')
		},
		m: (d) => {
			return d.getMinutes().toString()
		},
		ss: (d) => {
			return d.getSeconds().toString().padStart(2, '0')
		},
		s: (d) => {
			return d.getSeconds().toString()
		},
		E: (d) => {
			return ['日', '一', '二', '三', '四', '五', '六'][d.getDay()]
		},
		e: (d) => {
			return ['7', '1', '2', '3', '4', '5', '6'][d.getDay()]
		}
	}
	for (let k in formatPattern) {
		f = f.replace(k, formatPattern[k](date))
	}
	return f
}
